package tio.study.helloworld.server;

import java.io.IOException;

import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tio.server.AioServer;
import org.tio.server.ServerGroupContext;
import org.tio.server.intf.ServerAioHandler;
import org.tio.server.intf.ServerAioListener;

import tio.study.helloworld.common.HelloPacket;

/**
 * 服务端入口:
 * 包括四大部分：
 * 1、AioHandler：编码、解码、消息处理
 * 2、AioListener：事件监听器（用来执行某些附加操作）
 * 3、GroupContext：一组连接共用的上下文对象
 * 4、AioServer:用于创建并启动服务
 * @author Administrator
 *
 */
public class ServerStarter {
	
	private static Logger log = LoggerFactory.getLogger(AioServer.class);
	
	/**
	 * handler,编码、解码、消息处理
	 */
	public static ServerAioHandler<Object,HelloPacket,Object> aioHandler =  new ServerHandler();
	/**
	 * 事件监听器，可以为null，但是建议自己实现该接口，可以参考showcase了解一些用到的接口
	 */
	public static ServerAioListener<Object,HelloPacket,Object> aioListener = null;
	/**
	 * 一组连接共用的上下文对象
	 */
	public static ServerGroupContext<Object,HelloPacket,Object> serverGroupContext = new ServerGroupContext<>(aioHandler, aioListener);
	/**
	 * aioServer对象
	 */
	public static AioServer<Object,HelloPacket,Object> aioServer = new AioServer<>(serverGroupContext);
	//有需要则绑定IP，没有需要则null
	public static String serverIp = null;
	//监听的端口号
	public static int serverPort = 6789;
	
	/**
	 * 启动程序入口
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
//		PropertyConfigurator.configure("/log4j.properties");
		log.info("准备启动服务器。。。。");
		aioServer.start(serverIp, serverPort);
	}
	
}
